home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / public / vis5d / README next >
Text File  |  1994-08-01  |  81KB  |  1,925 lines

  1.                                                                  
  2.                        VIS-5D VERSION 3.3
  3.                                 
  4.  
  5. 1. OVERVIEW OF VIS-5D
  6.  
  7.      VIS-5D is a software system for visualizing data made by
  8. numerical weather models and similar sources.  VIS-5D works on
  9. data in the form of a five-dimensional rectangle.  That is, the
  10. data are real numbers at each point of a "grid" or "lattice"
  11. which spans three space dimensions, one time dimension and a
  12. dimension for enumerating multiple physical variables.  Of
  13. course, VIS-5D works perfectly well on data sets with only one
  14. variable or one time step (i.e. no time dynamics).  However, your
  15. data should have some depth in all three spatial dimensions.
  16.  
  17.      The VIS-5D system includes the vis5d visualization program,
  18. several programs for managing and analyzing five-dimensional data
  19. grids, and instructions and sample source code for converting
  20. your data into its file format.  We have included the VIS-5D
  21. source code so you can modify it or write new programs.  We have
  22. also included sample data sets from the LAMPS model and from Bob
  23. Schlesinger's thunderstorm model, so you can work through our
  24. examples.
  25.  
  26.      VIS-5D version 1.0 was written by Bill Hibbard and Dave
  27. Santek of the University of Wisconsin Space Science and
  28. Engineering Center, supported by the NASA Marshall Space Flight
  29. Center, and by Marie-Francoise Voidrot-Martinez of the French
  30. Meteorology Office.  Later version enhancements were written by
  31. Bill Hibbard, Brian Paul, and Andre Battaiola.  Dave Kamins and
  32. Jeff Vroom of Stellar Computer, Inc. provided substantial help
  33. and advice in using the Stellar software libraries.  Simon Baas
  34. and Hans de Jong of the Netherlands ported VIS-5D to HP
  35. workstations.  Pratish Shah of Kubota Inc. ported VIS-5D to the
  36. Kubota Alpha/Denali workstation.
  37.  
  38.      VIS-5D is offered under the terms of the GNU General Public
  39. License, which you can find in the file "NOTICE".  As the notice
  40. states, there is no warranty for the VIS-5D system, but we would
  41. be interested in hearing about your questions and problems.
  42. Also, if you would like to be added to the VIS-5D mailing list,
  43. send email to:
  44.  
  45.      Bill Hibbard  (email: whibbard@macc.wisc.edu) or
  46.      Brian Paul  (email: brianp@ssec.wisc.edu) at:
  47.      
  48.      Space Science and Engineering Center
  49.      University of Wisconsin - Madison
  50.      1225 West Dayton Street
  51.      Madison, WI  53706
  52.  
  53.  
  54.      This document was written to make it easier for you to use
  55. VIS-5D.  The next section tells you how to install VIS-5D on your
  56. system.  Section 3 gives you a sample data conversion program and
  57. tells you how to modify it to convert your data into the VIS-5D
  58. file structures.  Section 4 describes how to prepare your data
  59. for visualizing using the VIS-5D analysis programs.  Section 5
  60. describes how to visualize your data using the vis5d program.
  61. Section 6 leads you through using VIS-5D on the two sample data
  62. sets included on the tape.  Section 7 tells you something about
  63. writing your own analysis programs that fit into the VIS-5D
  64. structure.  Section 8 is a history of the versions of VIS-5D.
  65. The last section has a few words about the relation of VIS-5D to
  66. our much larger McIDAS system.
  67.  
  68.  
  69.  
  70. 2.1 SYSTEM REQUIREMENTS
  71.  
  72. VIS-5D currently works with the following systems:
  73.  
  74.      1. Silicon Graphics workstations:
  75.           32MB RAM
  76.           24-bit color and Z-buffer (or 8-bit Indigo)
  77.           IRIX version 4.0.1 or higher.
  78.           Multiple processors are used when present.
  79.  
  80.      2. IBM RS/6000 workstations*:
  81.           32MB RAM
  82.           Model 320H or higher
  83.           AIX version 3 or later is suggested.
  84.           8 or 24-bit color display
  85.           A 3-D graphics accelerator such as the GTO is
  86.                recommended but not required.
  87.           
  88.      3. HP series 7000 or 9000 workstations*:
  89.           32MB RAM
  90.           8 or 24-bit color display
  91.           HP-UX A.09.01 or later
  92.           
  93.      4. Sun Sparc workstations*:
  94.           32MB RAM
  95.           8 or 24-bit color display
  96.           SunOS Release 4.1.x or later
  97.           
  98.      5. DECstation workstations*:
  99.           32MB RAM
  100.           8 or 24-bit color display
  101.           ULTRIX V4.2 or later
  102.           
  103.      6. Kubota / DEC Alpha 3000 workstations:
  104.           32MB RAM
  105.           Denali Graphics
  106.           OSF/1 V1.3 or higher
  107.           KWS V1.3.3 or higher
  108.           NPGL Run-time license
  109.  
  110.      7. Stardent GS-1000 or GS-2000 workstations:
  111.           32MB RAM
  112.           True-color display (i.e. 32 planes).
  113.           Optional SpaceBall is supported.
  114.           Stellix version 2.3 or later is suggested.
  115.  
  116.  
  117. *Note:  for these workstations, VIS-5D does all 3-D rendering
  118. using a modified version of the VOGL library using X Windows.
  119. Because of this, rendering is rather slow.  We would like to
  120. encourage anyone with one of these workstations having 3-D
  121. graphics hardware to modify VIS-5D to utilize that hardware.
  122.  
  123.      If you would like to port VIS-5D to a new graphics system or
  124. workstation read the "PORTING" file which gives more information.
  125. If you succeed, please inform us so that we may add your work to
  126. the distribution.
  127.  
  128.  
  129. 2.2 INSTALLING VIS-5D
  130.  
  131.      VIS-5D is obtained via anonymous ftp.  If you don't have
  132. Internet access, you can obtain VIS-5D on tape by sending us a
  133. blank tape and a note explaining what you need.
  134.  
  135. Here are the installation instructions:
  136.  
  137.      1. Go to the directory in which you want VIS-5D installed:
  138.           % cd /usr/mydir
  139.           
  140.           NOTE:  The installation of VIS-5D will result in a new
  141.           subdirectory named "vis5d-3.3/" being created in the
  142.           current directory.
  143.           
  144.           NOTE:  Be sure that you have write permission in this
  145.           directory.  If you do not, you should become superuser
  146.           before proceeding.  When finished installing VIS-5D be
  147.           sure to set the file ownership and permissions
  148.           accordingly.
  149.  
  150.      2. Start ftp:
  151.           % ftp iris.ssec.wisc.edu
  152.           or
  153.           % ftp 144.92.108.63
  154.  
  155.      3. Login as anonymous and send your id as the password:
  156.           Name: anonymous
  157.           Password: myname@mylocation
  158.  
  159.      4. Go to the pub/vis5d directory:
  160.           ftp> cd pub/vis5d
  161.      
  162.      5. Transfer files in binary mode:
  163.           ftp> binary
  164.  
  165.      6. Get the VIS-5D archive file:
  166.           ftp> get vis5d-3.3.tar.Z
  167.  
  168.      7. Get optional files:
  169.           NOTE:  The GR3D0001 and GR3D0002 files are sample
  170.           McIDAS grid files.  You will only need them if you want
  171.           to work through the examples using igg3d, igu3d, and
  172.           comp5d:
  173.           
  174.           ftp> get GR3D0001             [optional]
  175.           ftp> get GR3D0002             [optional]
  176.           
  177.      8. Exit ftp:
  178.           ftp> bye
  179.  
  180.      9. Uncompress and un-tar the archive file:
  181.           % uncompress vis5d-3.3.tar.Z
  182.           % tar -xvf vis5d-3.3.tar
  183.  
  184.      10. Change to the newly created vis5d directory:
  185.           % cd vis5d-3.3
  186.  
  187.      11. Run make:
  188.           % make
  189.      
  190.           Make will print a list of systems supported for VIS-5D.
  191.           Look for yours on the list and type the appropriate
  192.           make command.  For example, suppose you have an IBM
  193.           RS/6000 without 3-D graphics hardware.  You should
  194.           type:
  195.           
  196.           % make ibm-x
  197.           
  198.           VIS-5D and its utility programs will now be compiled.
  199.           If you do not have C and/or FORTRAN compilers on your
  200.           system, this step will fail with an error message such
  201.           as "cc: Command not found." or "f77: Command not
  202.           found."  In this case you will have to get the
  203.           appropriate archive of executable programs:
  204.           
  205.           a. Repeat steps 1 through 5 as above.
  206.           b. Then get the archive of executable files for your
  207.              system:
  208.                ftp> get vis5d.xxx.bin.tar.Z
  209.            where xxx is one of the system configuration options
  210.            listed previously by 'make'.
  211.           c. Exit ftp:
  212.                ftp> bye
  213.           d. Uncompress and un-tar the archive:
  214.                % uncompress vis5d.xxx.bin.tar.Z
  215.                % tar -xvf vis5d.xx.bin.tar.Z
  216.           
  217.      12. Test VIS-5D:
  218.           % ./vis5d COMPLAMP
  219.           
  220.           NOTE:  To quit, click on the "EXIT" widget button.
  221.  
  222.      13. You may delete the .tar files if desired.
  223.  
  224.  
  225. 2.3 CUSTOMIZING
  226.  
  227.      After installation and testing you may want to customize the
  228. vis5d program by editing the src/vis5d.h file:
  229.  
  230.      1.    The visualization program vis5d assumes your system
  231.       has 32 megabytes of memory.  Although you can override
  232.       this when you invoke vis5d, it may be convenient to change
  233.       the default if your system has more than 32MB.  The
  234.       default number of megabytes is defined by the value of MBS
  235.       in the src/vis5d.h include file.
  236.      
  237.      2.    If you want to specify a different default topography
  238.       or map file, you can edit src/vis5d.h and change the
  239.       values for TOPOFILE and/or MAPFILE.
  240.   
  241.      When finished changing the src/vis5d.h file you must re-make
  242. the system by repeating installation step 11 above.
  243.  
  244.  
  245. 2.4 ORGANIZATION
  246.  
  247.      When you are finished installing VIS-5D you should have a
  248. directory named "vis5d" which contains the following:
  249.  
  250.      1. The VIS-5D program:  vis5d
  251.      2. Utility programs: comp5d, compinfo, gg3d, igg3d, igu3d,
  252.         help, and listfonts [SGI only]
  253.      3. Sample data sets:  COMPLAMP, COMPSCHL
  254.      4. Map outline files:  OUTLHRES, OUTLSUPW, OUTLUSAL, and
  255.         OUTLUSAM
  256.      5. Earth topography file:  EARTH.TOPO
  257.      6. The VIS-5D documentation (this file):  README
  258.      7. The GNU general public license file:  NOTICE
  259.      8. Hints on porting VIS-5D:  PORTING
  260.      9. The vis5d source code directory:  src/
  261.     10. The user interface source directory:  lui2/
  262.     11. The utilities source directory:  util/
  263.     12. User analysis functions directory with examples:
  264.         userfuncs/
  265.     13. The user contributed software directory:  contrib/
  266.     14. The VOGL GL-like library:  vogl/
  267.     15. Optionally, sample McIDAS grids:  GR3D0001, GR3D0002
  268.  
  269.  
  270.  
  271. 3. PUTTING YOUR DATA INTO VIS-5D FILES
  272.  
  273.      A data set for VIS-5D has a real number at each point in a
  274. five-dimensional grid.  These data are organized into a series of
  275. three-dimensional spatial grids whose dimensions are latitude,
  276. longitude and height (i.e. altitude).  The three-dimensional
  277. grids are organized into short sequences to enumerate the values
  278. of multiple physical variables at a single time.  The short
  279. sequences of physical variables are repeated into a longer
  280. sequence which steps through many time steps.
  281.  
  282.      These data are stored in our 3D grid files.  A 3D grid file
  283. is identified with an integer between 1 and 9999, and contains a
  284. sequence of 3D grids, which are also identified by integers.  A
  285. 3D grid file contains a directory entry for each 3D grid, which
  286. describes the size and geographic location of the grid, and the
  287. date, time and name of physical variable of the data in the grid
  288. array.  A five-dimensional data set consists of a sequence of 3D
  289. grids in a 3D grid file, all with the same size and geographic
  290. locations.  The grid sequence repeats the same short sequence of
  291. physical variables stepping forward through time.  For example,
  292. the grid sequence from a weather model could be:
  293.  
  294.                       PHYSICAL
  295.    GRID               VARIABLE
  296.   NUMBER  DATE  TIME    NAME
  297.      1   88035 000000    U
  298.      2   88035 000000    V
  299.      3   88035 000000    W
  300.      4   88035 000000    T
  301.      5   88035 000000    P
  302.      6   88035 010000    U
  303.      7   88035 010000    V
  304.      8   88035 010000    W
  305.      9   88035 010000    T
  306.     10   88035 010000    P
  307.     11   88035 020000    U
  308.     12   88035 020000    V
  309.     13   88035 020000    W
  310.     14   88035 020000    T
  311.     15   88035 020000    P
  312.  
  313.      This data set consists of 3 time steps of 5 physical
  314. variables.  The physical variables are the U, V and W components
  315. of the wind vector, the temperature T and the pressure P.  The
  316. date is February 4, 1988 and the time steps are midnight, 1 AM
  317. and 2 AM.  Dates are represented by five digit decimal integers
  318. YYDDD where YY are the last two digits of the year and DDD is the
  319. three digit day within the year, so February 4, 1988 is 88035.
  320. Times are represented by six digit decimal integers HHMMSS where
  321. HH are the hour, MM are the minute, and SS are the second, so 2
  322. AM is 020000.
  323.  
  324.      The following sample program creates a 3D grid file and
  325. fills its 3D grids with data for a five-dimensional data set.  It
  326. is repeated in the file sample.F, with make file sample.m.  The
  327. easiest way to read your data into a 3D grid file is to alter the
  328. sample.F program.  The subroutines it calls are all in the
  329. libmain.a library, and their source is in the src subdirectory.
  330. Here is a listing of sample.F:
  331.  
  332.   1 C THE MAIN PROGRAM OF YOUR CONVERSION PROGRAM MUST
  333.   2 C BE NAMED SUBROUTINE MAIN0
  334.   3 C
  335.   4       SUBROUTINE MAIN0
  336.   5 C
  337.   6 C THE NEXT TWO COMMENTS ARE PRINTED BY THE 'help sample'
  338. COMMAND
  339.   7 C ? SAMPLE program to convert data to 3D grid files
  340.   8 C ? sample gridf#
  341.   9 C
  342.  10 C DIMENSIONS OF 3D GRID
  343.  11 C NOTE NLATS AND NLONS MUST BOTH BE LESS THAN OR EQUAL TO 150
  344.  12 C NLATS, NLONS AND NHGTS MUST ALL BE AT LEAST 2
  345.  13       PARAMETER (NLATS=31,NLONS=51,NHGTS=16)
  346.  14 C
  347.  15 C NUMBER OF PHYSICAL VARIABLES AND NUMBER OF TIME STEPS
  348.  16 C NOTE EITHER OR BOTH MAY BE EQUAL TO 1.  THAT IS, VIS-5D
  349. DOES
  350.  17 C NOT FORCE YOU TO HAVE MULTIPLE VARIABLES OR TIME DYNAMICS.
  351.  18       PARAMETER (NVARS=5,NTIMES=100)
  352.  19 C
  353.  20 C ARRAY FOR 3D GRID DATA
  354.  21       REAL*4 G(NLATS, NLONS, NHGTS)
  355.  22 C ARRAYS FOR GRID FILE ID AND GRID DIRECTORY
  356.  23       INTEGER ID(8), IDIR(64)
  357.  24 C ARRAY FOR VARIABLE NAMES
  358.  25       CHARACTER*4 CNAME(5)
  359.  26 C
  360.  27 C LATITUDE, LONGITUDE AND HEIGHT BOUNDS FOR SPATIAL GRID
  361.  28       DATA XLATS/20.0/,XLATN/50.0/
  362.  29       DATA XLONE/70.0/,XLONW/120.0/
  363.  30       DATA XHGTB/0.0/,XHGTT/15.0/
  364.  31 C
  365.  32 C STARTING DATE IN YYDDD AND TIME IN HHMMSS
  366.  33       DATA JDAY/88035/,JTIME/020000/
  367.  34 C TIME STEP IN HHMMSS
  368.  35       DATA JSTEP/000100/
  369.  36 C
  370.  37 C NAMES OF THE FIVE PHYSICAL VARIABLES
  371.  38       DATA CNAME/'U   ', 'V   ', 'W   ', 'T   ', 'P   '/
  372.  39 C INITIALIZE GRID DIRECTORY TO ZEROS
  373.  40       DATA IDIR/64*0/
  374.  41 C
  375.  42 C READ GRID FILE NUMBER FROM COMMAND LINE.  IPP WILL
  376.  43 C CONVERT THE PARAMETER # 1 TO AN INTEGER, WITH A DEFAULT
  377.  44 C VALUE OF 0.
  378.  45       IGRIDF=IPP(1,0)
  379.  46 C IF ILLEGAL GRID FILE NUMBER, PRINT ERROR MESSAGE AND RETURN
  380.  47       IF(IGRIDF .LT. 1 .OR. IGRIDF .GT. 9999) THEN
  381.  48         CALL EDEST('BAD GRID FILE NUMBER ',IGRIDF)
  382.  49         CALL EDEST('MUST BE BETWEEN 1 AND 9999 ',0)
  383.  50         RETURN
  384.  51       ENDIF
  385.  52 C
  386.  53 C CALCULATE GRID INTERVALS
  387.  54       XLATIN=(XLATN-XLATS)/(NLATS-1)
  388.  55       XLONIN=(XLONW-XLONE)/(NLONS-1)
  389.  56       XHGTIN=(XHGTT-XHGTB)/(NHGTS-1)
  390.  57 C
  391.  58 C DATE AND TIME FOR FIRST TIME STEP
  392.  59 C IDAYS CONVERTS YYDDD FORMAT TO DAYS SINCE JAN. 1, 1900
  393.  60       IDAY=IDAYS(JDAY)
  394.  61 C ISECS CONVERTS HHMMSS FORMAT TO SECONDS SINCE MIDNIGHT
  395.  62       ISEC=ISECS(JTIME)
  396.  63 C
  397.  64 C INITIALIZE GRID IDENTIFIER TEXT TO BLANKS
  398.  65 C NOTE LIT CONVERTS A CHARACTER*4 TO AN INTEGER*4
  399.  66       DO 10 I=1,8
  400.  67 10    ID(I)=LIT('    ')
  401.  68 C
  402.  69 C SET UP DIRECTORY ENTRY
  403.  70 C
  404.  71 C DIMENSIONS OF GRID
  405.  72       IDIR(1)=NLATS*NLONS*NHGTS
  406.  73       IDIR(2)=NLATS
  407.  74       IDIR(3)=NLONS
  408.  75       IDIR(4)=NHGTS
  409.  76 C
  410.  77 C LATITUDES AND LONGITUDES IN DEGREES * 10000
  411.  78       IDIR(22)=4
  412.  79       IDIR(23)=NINT(XLATN*10000.)
  413.  80       IDIR(24)=NINT(XLONW*10000.)
  414.  81       IDIR(25)=NINT(XLATIN*10000.0)
  415.  82       IDIR(26)=NINT(XLONIN*10000.0)
  416.  83 C
  417.  84 C HEIGHTS IN METERS
  418.  85       IDIR(31)=1
  419.  86       IDIR(32)=NINT(XHGTT*1000.)
  420.  87       IDIR(33)=NINT(XHGTIN*1000.)
  421.  88 C
  422.  89 C CREATE THE GRID FILE
  423.  90       CALL IGMK3D(IGRIDF, ID, NLATS*NLONS*NHGTS)
  424.  91 C
  425.  92 C LOOP FOR TIME STEPS
  426.  93       DO 200 IT=1,NTIMES
  427.  94 C
  428.  95 C SET DATE AND TIME IN DIRECTORY ENTRY
  429.  96 C IYYDDD CONVERTS DAYS SINCE JAN. 1, 1900 TO OUR YYDDD FORMAT
  430.  97       IDIR(6)=IYYDDD(IDAY)
  431.  98 C IHMS CONVERTS SECONDS SINCE MIDNIGHT TO OUR HHMMSS FORMAT
  432.  99       IDIR(7)=IHMS(ISEC)
  433. 100 C
  434. 101 C LOOP FOR PHYSICAL VARIABLES
  435. 102       DO 190 IV=1,NVARS
  436. 103 C
  437. 104 C SET VARIABLE NAME IN DIRECTORY ENTRY
  438. 105       IDIR(9)=LIT(CNAME(IV))
  439. 106 C
  440. 107 C
  441. *************************************************************
  442. 108 C READ YOUR DATA FOR TIME STEP NUMBER IT AND VARIABLE NUMBER
  443. IV
  444. 109 C INTO THE ARRAY G HERE.
  445. 110 C NOTE THAT G(1,1,1) IS THE NORTH WEST BOTTOM CORNER AND
  446. 111 C G(NLATS,NLONS,NHGTS) IS THE SOUTH EAST TOP CORNER.
  447. 112 C MARK A GRID POINT AS 'MISSING DATA' BY SETTING IT = 1.0E35
  448. 113 C
  449. *************************************************************
  450. 114 C
  451. 115 C CALCULATE 3D GRID NUMBER
  452. 116       IGRID=IV+NVARS*(IT-1)
  453. 117 C WRITE DATA IN G AND DIRECTORY IN IDIR TO 3D GRID
  454. 118 C NOTE WE PASS THE NEGATIVE OF THE GRID NUMBER (I.E. -IGRID)
  455. 119       CALL IGPT3D(IGRIDF,-
  456. IGRID,G,NLATS,NLONS,NHGTS,IDIR,IGNO)
  457. 120 C
  458. 121 C END OF PHYSICAL VARIABLE LOOP
  459. 122 190   CONTINUE
  460. 123 C
  461. 124 C INCREMENT DATE AND TIME, CONVERT JSTEP FROM HHMMSS TO
  462. SECONDS
  463. 125       ISEC=ISEC+ISECS(JSTEP)
  464. 126 C IF SECONDS CARRY PAST ONE DAY, ADJUST SECONDS AND DAYS
  465. 127       IDAY=IDAY+ISEC/(24*3600)
  466. 128       ISEC=MOD(ISEC,24*3600)
  467. 129 C
  468. 130 C END OF TIME STEP LOOP
  469. 131 200   CONTINUE
  470. 132 C
  471. 133       RETURN
  472. 134       END
  473.  
  474.      The routines IGMK3D and IGPT3D are the interface to the 3D
  475. grid structures.  The call to IGMK3D at line 90 creates a 3D grid
  476. file. Its parameters are:
  477.  
  478.    1  INTEGER*4 - number of 3D grid file to create
  479.    2  array of 8 INTEGER*4 - a 32 byte text ID for the file
  480.    3  INTEGER*4 - maximum number of grid points in any 3D grid.
  481.  
  482. After the 3D grid file is created, IGPT3D is called in line 119
  483. once for each combination of time step and physical variable to
  484. put 3D grids into the file.  Its parameters are:
  485.  
  486.      1  INTEGER*4 - number of 3D grid file to write to
  487.      2  INTEGER*4 - minus the number of the 3D grid to write.
  488.           This is 0 or positive to indicate write to next empty
  489.           grid.
  490.      3  array of REAL*4 - array of grid points to write
  491.      4  INTEGER*4 - first dimension of grid array, # of latitudes
  492.      5  INTEGER*4 - second dimension of grid array, # of
  493.           longitudes
  494.      6  INTEGER*4 - third dimension of grid array, # of heights
  495.      7  array of 64 INTEGER*4 - directory for 3D grid
  496.      8  INTEGER*4 - number of 3D grid actually written, returned
  497.           by IGPT3D.
  498.  
  499.      VIS-5D allows data sets which span more than one 3D grid
  500. file.  In this case the grid sequence of repeating variables and
  501. repeating time steps continues across grid file boundaries.  A
  502. single 3D grid file is limited to 100,000,000 grid points (400
  503. megabytes).  If your data set contains more than this number of
  504. grid points, then you should alter sample.F to create a new 3D
  505. grid file (by incrementing IGRIDF and calling IGMK3D) on every
  506. Nth time step, where N time steps will fit in one 3D grid file.
  507. Note that the comp5d command described in section 4 references
  508. data sets as sequences of 3D grid files.
  509.  
  510.      The VIS-5D system processes the gridded data based on the
  511. information in the grid directories, which is contained in the
  512. IDIR array in the sample.F program.  It is a good idea to
  513. initialize IDIR to all zeros, as in line 40.  The size of the 3D
  514. grid is set in entries 1 to 4 of IDIR (lines 72 to 75).  Note the
  515. restrictions on data set size described in section 4 of this
  516. document.
  517.  
  518.      The date and time of the 3D grid are set in entries 6 and 7
  519. of IDIR, as in lines 97 and 99.  Note that they are represented
  520. in our YYDDD and HHMMSS formats described above.  Four functions
  521. are available in libmain.a for converting between these formats
  522. and a format which makes date and time calculations easy.  The
  523. IDAYS function converts YYDDD format to days since January 1,
  524. 1900, as in line 60.  The ISECS function converts HHMMSS format
  525. to seconds since midnight, as in lines 62 and 125.  This makes it
  526. easy to do calculations with dates and times, as in lines 125,
  527. 127 and 128.  Then the IYYDDD function converts days back to
  528. YYDDD and the IHMS function converts back to HHMMSS, as in lines
  529. 97 amd 99.
  530.  
  531.      The physical variable name is 4 ASCII characters packed into
  532. entry 9 of IDIR, as in line 105.  The LIT function in libmain.a
  533. converts a CHARACTER*4 to an INTEGER*4.
  534.  
  535.      The spatial location of the grid is described in terms of
  536. latitude and longitude in ten-thousandths of a degree, and in
  537. terms of height (altitude) in meters.  The grid element G(1,1,1)
  538. is in the north west bottom corner of the grid, and the grid
  539. element G(NLATS,NLONS,NHGTS) is in the south east top corner.
  540. The grid latitude and longitude are described in entries 21 to 25
  541. of IDIR, as in lines 78 to 82.  The grid heights are described in
  542. entries 31 to 33, as in lines 85 to 87.  The NINT function is a
  543. FORTRAN intrinsic for converting a REAL to the nearest INTEGER.
  544. The latitude, longitude and height spacings are simply the
  545. distances between between successive grid points.  Latitudes are
  546. positive in the northern hemisphere, longitudes are positive in
  547. the western hemispere, and of course heights are positive above
  548. sea level.
  549.  
  550.      The real work in modifying the sample.F program is writing
  551. code for getting your data into the G array, in lines 107 to 113.
  552. For some data you may want to fake the latitude, longitude and
  553. height coordinates.  However, if your data is geographical and
  554. large scale, then you may want to describe its location
  555. accurately, and it may be necessary to resample your data to a
  556. regularly spaced grid in latitude, longitude and height from some
  557. other map projection.  It may also be necessary to transpose your
  558. data array to get the index order to be LAT, LON and HGT, and to
  559. invert your data array in some index to make sure G(1,1,1) is the
  560. north west bottom corner.  Even in faked coordinates, you may
  561. need to transpose or invert your data array to get the right
  562. 'handedness' in the display.  The VIS-5D system allows grid
  563. points marked as missing, indicated by array values greater than
  564. 1.0E30.  If you do fake the latitude, longitude and height
  565. coordinates, then the topography and map display of the vis5d
  566. program will be meaningless.  If you calculate trajectories for
  567. your data set, either use accurate coordinates, or take great
  568. care to get relative time, distance and velocity scales
  569. consistent in the faked coordinates.  Otherwaise trajectory paths
  570. will not be realistic.
  571.  
  572.      The IPP function in libmain.a returns the value of a command
  573. parameter as INTEGER*4, as in line 45.  There are similar
  574. functions CPP and DPP in libmain.a which return CHARACTER*12
  575. (converted to upper case) and REAL*8 values for command
  576. parameters.  They get command parameters based on their
  577. sequential position in the command line.  They all have similar
  578. function parameters:
  579.  
  580.      1  INTEGER*4 - sequence number of command parameter
  581.      2 (IPP) INTEGER*4 - default value of command parameter
  582.           or
  583.      2 (CPP) CHARACTER*12 - default value of command parameter
  584.           or
  585.      2 (DPP) REAL*8 - default value of command parameter.
  586.  
  587. There is also a mechanism for picking up command parameters based
  588. on keywords.  This is done with the functions IKWP, CKWP and DKWP
  589. in libmain.a.  They get command parameters based on position
  590. after a keyword of the form '-keyword'.  IKWP returns an
  591. INTEGER*4, CKWP returns a CHARACTER*12 (converted to upper case)
  592. and DKWP returns a REAL*8.  They all have similar function
  593. parameters:
  594.  
  595.      1  CHARACTER*12 - keyword string in command line
  596.      2  INTEGER*4 - sequence number of command parameter after
  597.      keyword
  598.      3 (IKWP) INTEGER*4 - default value of command parameter
  599.           or
  600.      3 (CKWP) CHARACTER*12 - default value of command parameter
  601.           or
  602.      3 (DKWP) REAL*8 - default value of command parameter.
  603.  
  604. The NKWP function in libmain.a returns the number of sequential
  605. parameters after a keyword.  Its function parameter is:
  606.  
  607.      1  CHARACTER*12 - keyword string in command line.
  608.  
  609.      On the most machines the REAL*4 format is not a subset of
  610. the REAL*8 format, so make sure to declare DPP and DKWP as
  611. REAL*8, as well as their third function parameters (for default
  612. values of command parameters).
  613.  
  614.      If you would rather write your grid conversion program in C
  615. instead of FORTRAN, look at the file 'sample.c'.  It contains
  616. examples of how to easily read and write grid files using C
  617. structures and routines in stdio.
  618.  
  619.      To make your own topography files for use with the -topo
  620. option there is a maketopo.c program in the vis5d/src/ directory.
  621. It explains the format of the file and shows how to create such
  622. files.
  623.  
  624.  
  625.  
  626. 4. MANAGING AND ANALYZING YOUR DATA
  627.  
  628.      Once your data set is in a 3D grid file, you can list
  629. directory information about the grids using the command:
  630.  
  631.      igg3d list I J -gr3df N
  632.  
  633. where N is the 3D grid file number, and I and J give the range of
  634. grid numbers to list.  You can get a quick idea of the data
  635. values using the command:
  636.  
  637.      igg3d info I J -gr3df N
  638.  
  639. which will list the minimum and maximum values, the mean, the
  640. standard deviation and the number of grid points marked for
  641. missing data, for grid numbers I to J in 3D grid file number N.
  642.  
  643.      Before you can visualize your data set, you must convert it
  644. to a compressed file structure using the command:
  645.  
  646.      comp5d N M F
  647.  
  648. where N is the first 3D grid file number and M is the number of
  649. grid files in the data set.  The M parameter allows data sets
  650. which span multiple grid files and should not be confused with
  651. the total number of 3D grids in the data set.  F is the name of
  652. the compressed grid file.  You can choose whatever name you want,
  653. but note that comp5d will convert the name to all upper case
  654. characters.  If your data set contains wind vector components you
  655. can use the -wind keyword to select a subset of wind components
  656. or calculate horizontal wind speed, named 'SPD ', for the
  657. compressed file.  The longitude, latitude, and vertical
  658. components of the wind vector must be named 'U   ', 'V   ' and 'W
  659. ' respectively.  If you use the -wind keyword, then only those
  660. wind-relevant variables (i.e. U, V, W & SPD) whose names are
  661. listed after -wind will be included in the compressed file.  For
  662. example, to include SPD and W in the compressed file, from a 3D
  663. grid file containing U, V and W components, use the command:
  664.  
  665.      comp5d N M F -wind SPD W
  666.      
  667.      The 'compinfo' program is used to get information about a
  668. compressed grid file made by comp5d.  For example:
  669.  
  670.      compinfo COMPLAMP
  671.  
  672. will print information about the COMPLAMP file including the grid
  673. dimensions, number of time steps, number of variables, etc.
  674.  
  675.      There are restrictions on the dimensions of data sets which
  676. can be visualized using the vis5d program.  Currently, you are
  677. limited to a maximum of 30 physical variables and 400 times
  678. steps.  The vis5d program will also fail if there is a trivial
  679. spatial dimension:
  680.  
  681.      NLATS < 2
  682.      NLONS < 2
  683.      NHGTS < 2
  684.  
  685. The vis5d program will perform badly, possibly making errors, if
  686. the total 5-D size:
  687.  
  688.      NLATS * NLONS * NHGTS * NTIMES * NVARS
  689.  
  690. is too large.  The limit depends on the amount of memory in your
  691. system.  For a 64MB system, the limit is around 25,000,000, with
  692. performance degrading as the data set size exceedes the limit.
  693.  
  694.      VIS-5D provides the gg3d and igg3d programs which can be
  695. used to reduce the resolution and scale of a data set to meet
  696. these limits.  The gg3d program resamples a 3D grid to new array
  697. dimensions and new extents in latitude, longitude and height,
  698. using the command:
  699.  
  700.      gg3d samp N I M J
  701.      gg3d ave  N I M J
  702.      
  703. where N and I are the numbers of the source 3D grid file and
  704. grid, and M and J are the numbers of the destination 3D grid file
  705. and grid.  The 'samp' version calculates destination grid point
  706. values by linearly interpolating between source grid point
  707. values, and is appropriate for increasing resolution.  The 'ave'
  708. version calculates destination grid points by averaging multiple
  709. source grid point values, and is appropriate for decreasing
  710. resolution.  Without any keywords gg3d will do a straight copy
  711. operation.  Invoke the gg3d command with the keyword:
  712.  
  713.      -size NLATS NLONS NHGTS
  714.  
  715. to set the grid dimensions for the destination grid as different
  716. from the dimensions for the source grid.  Invoke gg3d with the
  717. keywords:
  718.  
  719.      -lat XLATS XLATN
  720.      -lon XLONE XLONW
  721.      -hgt XHGTB XHGTT
  722.  
  723. to set extents (range bounds) for the latitude, longitude and
  724. height for the destination grid as different from the extents for
  725. the source grid.  The -lat, -lon and -hgt keywords take real
  726. arguments.
  727.  
  728.      The igg3d program provides options for copying and deleting
  729. 3D grids and for interpolating between 3D grids in time.
  730. Sequences of 3D grids are copied using the command:
  731.  
  732.      igg3d get N I J M K
  733.  
  734. where N is the source 3D grid file number, I and J are the range
  735. of source grid numbers, M is the destination grid file number,
  736. and K is the starting destination grid number.  A single grid may
  737. be copied within a 3D grid file using the command:
  738.  
  739.      igg3d copy I J -gr3df N
  740.  
  741. where N is the 3D grid file number, I is the number of the source
  742. grid and J is the number of the destination grid.  A range of
  743. grids may be deleted with the command:
  744.  
  745.      igg3d del I J -gr3df N
  746.  
  747. where N is the 3D grid file number and grid numbers between I and
  748. J are to be deleted.
  749.  
  750. The igg3d command provides two different options for time
  751. interpolation.  The first is:
  752.  
  753.      igg3d ave K I J D T -gr3df N
  754.  
  755. where grid number K is produced by interpolating between grid
  756. numbers I and J, all in 3D grid file number N.  Grid number K
  757. will be assigned day D (in YYDDD format) and time T (in HHMMSS
  758. format).  The relative weighting of grids I and J is calculated
  759. from this date and time, assuming linear time interpolation.  If
  760. grid K is not between grids I and J in date and time, igg3d
  761. prints an error message.  The igg3d command also provides a more
  762. complex time interpolation option:
  763.  
  764.      igg3d int I D T -setdel S M -lag U V -gr3df N
  765.  
  766.      This will put a grid in the next empty slot of 3D grid file
  767. number N, assigned to day D (in YYDDD format) and time T (in
  768. HHMMSS format).  This grid will be interpolated from a sequence
  769. of grids, all in file number N, at grid numbers I, I+S, I+2S, ...
  770. , I+(M-1)S.  This sequence of grids should be ascending in date
  771. and time.  igg3d will search the sequence and linearly
  772. interpolate between the two consectutive grids from the sequence
  773. which bracket day D and time T.  Furthermore, the interpolation
  774. will be done in a coordinate system moving at constant velocity
  775. (U, V), where U and V are in meters per second, with V positive
  776. for motion from south to north and U positive for motion from
  777. west to east.  The two bracketing grids from the sequence will be
  778. shifted in latitude and longitude to their positions at day D and
  779. time T, and the result interpolated between these two spatially
  780. shifted grids.  Furthermore, if the grids in the sequence are
  781. identified in their directory entries with variable name 'U   '
  782. or 'V   ', then the corresponding component of the velocity (U,
  783. V) will be subtracted from the grid values.
  784.  
  785.      The 'int' option of igg3d may seem complex, but it is just
  786. what you need if you want to write a script to re-interpolate a
  787. five-dimensional data set to a new sequence of time steps.  It is
  788. particularly useful if the source sequence does not have uniform
  789. time steps, or if the physics are moving through the spatial grid
  790. and you want to avoid blurring in the time re-interpolation.  You
  791. would set M equal to the number of time steps and S equal to the
  792. number of physical variables in the source five-dimensional data
  793. set.  The I parameter would be set equal to the grid number in
  794. the first time step of the variable being interpolated.  Note
  795. that this igg3d option will put the new grid at the end of the
  796. grid file containing the source data set, but you can use 'igg3d
  797. get' to move it to another grid.
  798.  
  799. You can use the command:
  800.  
  801.      igu3d make N M
  802.  
  803. to create 3D grid file number N, which allows 3D grids of up to M
  804. points each.  The names of 3D grid files have the form:
  805.  
  806.      GR3Dnnnn
  807.  
  808. where nnnn is the four digit decimal grid file number, padded
  809. with leading zeros if needed to make four digits.  Use the UNIX
  810. command:
  811.  
  812.      rm GR3Dnnnn
  813.  
  814. to delete a 3D grid file.
  815.  
  816.      The help command will list a quick reference to the
  817. parameter formats for the VIS-5D utility commands.  Just enter:
  818.  
  819.      help NAME
  820.  
  821. where NAME is the name of the command such as igg3d, igu3d, or
  822. comp5d.
  823.  
  824.  
  825.  
  826. 5.1  USING VIS-5D TO VISUALIZE YOUR DATA
  827.  
  828.      This section describes how to use the VIS-5D visualization
  829. program, vis5d.  It is almost completely controlled using the
  830. mouse with a graphical user interface.  The best way to learn to
  831. use it is to experiment.  There is no way to harm your data
  832. within from the program.
  833.  
  834.      After you have used comp5d to produce a compressed file, you
  835. can interactively visualize your data set with the command:
  836.  
  837.      vis5d file [options]
  838.  
  839. where 'file' is the file name of the compressed file (made with
  840. comp5d) which you want to visualize.  A number of options are
  841. available (none are usually needed):
  842.      -alpha
  843.           [SGI only]  Use alpha blending instead of "screen door"
  844.           transparency.
  845.      -box x y z
  846.           This lets you specify the aspect ratio or proportions
  847.           of the 3-D box.  Default values are 2 2 1.
  848.      -font xfont
  849.           [Stardent]  Sets the font used in the 3-D window. Use
  850.           the xlsfonts command to see a list of X fonts on your
  851.           system.
  852.           Example:  vis5d COMPLAMP -font fg-30
  853.      -font glfont height
  854.           [SGI]  Sets the font used in the 3-D window.  Use the
  855.           listfonts command included with VIS-5D to see a list of
  856.           GL fonts on your system.  The height argument is the
  857.           font height in points where 72 points = 1 inch.
  858.           Example:  vis5d COMPLAMP -font Helvetica 30
  859.           [IBM]  Not supported.
  860.      -full
  861.           Open the 3-D window as a borderless, full-screen size
  862.           window.
  863.      -map file
  864.           Use a map file other than the default of OUTLSUPW.  See
  865.           section 2.3 to setup a different default.
  866.           Example:  vis5d COMPLAMP -map OUTLUSAL
  867.      -mbs n
  868.           Override the assumed system memory size of 64
  869.           megabytes.  See section 2.3 to setup a different
  870.           default value.
  871.      -rate ms
  872.           Change the default animation rate.  ms is the minimum
  873.           delay in milliseconds between frames.  Default is 100
  874.           ms.
  875.      -texture rgbfile
  876.           Specify an SGI .rgb file to texture map over the
  877.           topography.  [SGI only]
  878.      -topo file
  879.           Use a topography file other than the default of
  880.           EARTH.TOPO.  See section 2.3 to setup a different
  881.           default.
  882.      -wdpy xdisplay
  883.           Put the widgets on a different X display.  Useful in
  884.           combination with -full for making slides and videos.
  885.           Example:  vis5d COMPLAMP -full -wdpy pluto:0
  886.      -wide w
  887.           Set width of line segments in pixels (default is 1.0).
  888.           Again, useful for making videos.
  889.           Example:  vis5d COMPLAMP -wide 3.0
  890.      -wind2 uvar vvar [wvar]
  891.           Specify the names of a secondary set of U, V, and
  892.           (optionally) W wind component variables to use when
  893.           drawing the H-WIND 2 and V-WIND 2 vector slices.
  894.           Useful when you have two sets of wind vector components
  895.           that you want to visualize simultaneously.
  896.           Example:  vis5d MYDATA -wind2 U2 V2 W2
  897.           
  898.  
  899.      If you type 'vis5d' without arguments you will get a list of
  900. available options.
  901.  
  902.      When you start vis5d it loads your data set and then opens a
  903. 3-D window on the right and a control panel on the left of the
  904. screen.  The 3-D window is used to view and interact with the
  905. data.  In its upper-left corner is a combination analog/digital
  906. clock which indicates the current time step.  The control panel
  907. contains several groups of buttons.
  908.  
  909.      The first button group contains the following buttons:
  910.  
  911.           [ANIMATE]  [STEP]     NEW VAR    EXIT
  912.           NEW SURF   TOP        SOUTH      WEST
  913.           [TOPO]     [MAP]      BOX        CLOCK
  914.           SAVE       RESTORE    GRID #'s   CONT #'s
  915.           [PRETTY]   REVERSE    [SAVE PIC] [PERSPEC]
  916.  
  917.      These buttons are used to toggle, activate, or control
  918. various functions as described below.  Some of the above buttons
  919. are enclosed in brackets to indicates that they may be blank upon
  920. starting vis5d.  This will happen when the button does not apply
  921. to the current data set, because the button would conflict with a
  922. command line option, or because the feature is not available on
  923. your hardware.
  924.  
  925.      The next group of radio buttons are used to determine how
  926. the mouse behaves in the 3-D window:
  927.  
  928.      Normal -       Normal mouse mode is used to rotate, zoom,
  929.                     and pan the graphics in the 3-D window.  See
  930.                     section 5.3.
  931.      
  932.      Trajectory -   This mode is used for creating and displaying
  933.                     wind trajectories.  See section 5.7.
  934.      
  935.      Slice -        This mode is used to reposition horizontal
  936.                     and vertical slices.  See section 5.5.
  937.      
  938.      Label -        This mode is used to create and edit text
  939.                     labels in the 3-D window.  See section 5.8.
  940.      
  941.      Probe -        Used to inspect individual grid values by
  942.                     moving a 3-D cursor through the 3-D grid.
  943.                     See section 5.9.
  944.  
  945.      These modes are mutually exclusive; only one may be selected
  946. at a time.  To the immediate right of these buttons is the mouse
  947. button legend.  It is there to remind you of the use of each
  948. mouse button in the 3-D window for the currently selected mode.
  949.  
  950.      Next, if your data set contains U, V, and W wind component
  951. variables there will be a row of four wind slice buttons:
  952.  
  953.           H-WIND 1     V-WIND 1     H-WIND 2     V-WIND 2
  954.  
  955.      A wind slice depicts the motions of the wind by drawing
  956. small arrows which point in the direction of the wind.  The
  957. length of each line segment indicates it's magnitude.  The tails
  958. of the line segments are all anchored within a horizontal or
  959. vertical plane through the 3-D box.  The location of the slice
  960. plane can be changed with the mouse while in "Slice" mode.  See
  961. section 5.5 for more details.
  962.  
  963.      The remaining set of widget buttons is used to control the
  964. display of 3-D isosurfaces, horizontal contour slices, vertical
  965. contour slices, horizontal colored slices, vertical colored
  966. slices, and volume renderings of your data.  The buttons are
  967. arranged in a matrix.  Each row corresponds to a physical
  968. variable in your data set.  Each column corresponds to one type
  969. of graphic listed above.
  970.  
  971.      The display of any graphic is controlled by clicking on its
  972. widget button with the left mouse button.  Each type of graphic
  973. also has a small control window which appears when turned on.
  974. The control windows are different for each type of graphic and
  975. are explained below.  To bring up a graphic's control window
  976. without toggling its display, use the middle mouse button.  When
  977. the graphic is displayed it will be the same color as the widget
  978. button, making it easy to distinguish and identify different
  979. variables in the display.  To change the color of the graphic,
  980. click on its widget button with the right mouse button and a
  981. small window with four slider widgets will appear.  By changing
  982. the levels of red, green, and blue you can make any color.
  983.  
  984.      If the control panel window becomes obscured by other
  985. windows, you can bring it to the top by pressing the "F1" key
  986. while the mouse pointer is in the 3-D window.  This is especially
  987. useful when using the '-full' option.
  988.  
  989.  
  990. 5.2  VIS-5D CONTROL BUTTONS
  991.  
  992.      The following is a description of each button in this group.
  993. Some of them will be described in more detail later in this
  994. document.
  995.  
  996.      ANIMATE   This toggle button turns animation on or off. Use
  997.                the left or middle mouse buttons for forward
  998.                animation and the right mouse button for reverse
  999.                animation.  Does not appear when viewing data sets
  1000.                with one time step.
  1001.      
  1002.      STEP      This button has three possible uses depending on
  1003.                which mouse button is pressed:
  1004.                  Left Button - Step ahead one time step
  1005.                  Middle Button - Go to first time step.
  1006.                  Right Button - Backward one time step.
  1007.                This button does not appear when viewing data sets
  1008.                with one time step.
  1009.      
  1010.      NEW VAR   Used to duplicate physical variables or invoke
  1011.                external analysis functions. This is explained
  1012.                further in section 5.10.
  1013.      
  1014.      EXIT      Exit the program.  A verification window will
  1015.                appear to ask you to verify your decision.
  1016.      
  1017.      NEW SURF  Computes a new 3-D contour surface.
  1018.      
  1019.      TOP       Depending on which mouse button is pressed:
  1020.                  Left or Middle:  Reset the 3-D window to the
  1021.                  default top-view.
  1022.                  Right:  Set the 3-D window to a bottom-view.
  1023.      
  1024.      SOUTH     Depending on which mouse button is pressed:
  1025.                  Left or Middle: Set 3-D window to a south-view.
  1026.                  Right:  Set 3-D window to a north-view.
  1027.      
  1028.      WEST      Depending on which mouse button is pressed.
  1029.                  Left or Middle:  Set 3-D window to a west-view.
  1030.                  Right:  Set 3-D window to an east-view.
  1031.      
  1032.      TOPO      Toggle the display of topography.  This button
  1033.                will not appear if the topography file was not
  1034.                found.  Click on TOPO with the right mouse button
  1035.                to edit the topography color.
  1036.      
  1037.      MAP       Toggle the display of map lines.  This button will
  1038.                not appear if the map file was not found.
  1039.      
  1040.      BOX       Toggle the display of the 3-D box.
  1041.      
  1042.      CLOCK     Toggle the display of the clock.
  1043.      
  1044.      SAVE      Save current graphics and colors.  After you've
  1045.                setup a variety of isosurfaces, slice, wind
  1046.                trajectories and colors it is useful to be able to
  1047.                save them and restore them the next time the data
  1048.                set is visualized.  Click on SAVE with left mouse
  1049.                button to save all graphics and colors.  Click on
  1050.                SAVE with the right mouse button to just save all
  1051.                colors.
  1052.      
  1053.      RESTORE   Restore the data last saved with the SAVE button.
  1054.      
  1055.      GRID #s   Normally the bounds of the data set in latitude,
  1056.                longitude and kilometers are displayed along the
  1057.                edges of the box.  Use this button to display the
  1058.                numbers in grid coordinates instead.
  1059.      
  1060.      CONT #s   The numbers which are drawn on contour line slices
  1061.                can be toggled on or off with this button.
  1062.      
  1063.      PRETTY    Toggle the 'pretty' rendering option on or off.
  1064.                When turned on the 3-D graphics will be rendered
  1065.                using whatever high quality options are available
  1066.                on your system:
  1067.                  Stellar:  isosurfaces are antialiased and
  1068.                     rendered with improved transparency.
  1069.                  SGI:  antialiasing is done on systems with an
  1070.                     accumulation buffer.
  1071.                  Others:  Pretty rendering is not supported on
  1072.                     other systems
  1073.                When PRETTY is turned on, your mouse pointer will
  1074.                turn into a "busy" symbol.  Pretty rendering is
  1075.                slow and may take over minute to render a single
  1076.                image.  It should normally be turned off.  This is
  1077.                used when making slides or printouts.
  1078.                
  1079.      REVERSE   Normally, the 3-D box and clock are drawn in white
  1080.                on a black background.  This option reverses that
  1081.                and draws a black box and clock on a white
  1082.                background.  This is used with the xwd(1) program
  1083.                when making print outs.
  1084.      
  1085.      SAVE PIC  Used to save the image in the 3-D window to a
  1086.                file.
  1087.      
  1088.      PERSPEC   Toggle between perspective and orthogonal viewing
  1089.                projections.
  1090.      
  1091.  
  1092. 5.3  NORMAL VIEWING MODE
  1093.  
  1094.      In 'Normal' mouse mode the mouse is used to view the data in
  1095. the 3-D window.  By pressing the left mouse button and moving the
  1096. mouse while the cursor is in the 3-D window, the 3-D image can be
  1097. rotated.  At any instant you can only control two of the three
  1098. degrees of freedom of box rotations.  However, by releasing and
  1099. re-pressing the left mouse button you can change your "grip" on
  1100. the box.  With practice you will learn to control the box through
  1101. a series of mouse moves, releasing and re-pressing the left
  1102. button between moves.  The center button controls two very
  1103. different things depending on how the mouse is moved.  Holding
  1104. the center button down and sliding the mouse away from yourself
  1105. zooms in, making the box get bigger.  Sliding the mouse towards
  1106. yourself zooms out and makes the box get smaller.  Holding the
  1107. center button down and sliding the mouse right moves a plane of
  1108. invisibility (i.e. a clipping plane) into the box, creating a cut
  1109. away view of the box contents.  Sliding the mouse left brings the
  1110. clipping plane toward yourself, eventually out of the box
  1111. altogether.  The right mouse button is pressed to translate the
  1112. box in the window.  This is useful if you want to zoom in to
  1113. something that is not in the center of the box.  Note that the
  1114. center of rotation for box rotations stays at the center of the
  1115. screen rather than in the center of the box.
  1116.  
  1117.  
  1118. 5.4  3-D CONTOUR SURFACES
  1119.  
  1120.      A 3-D contour surface (isosurface) shows the 3-D volume
  1121. bounded by a particular isovalue.  The isosurface has the
  1122. specified iso-level, the volume inside contains values greater
  1123. (or less) than the iso-level.  The volume outside contains values
  1124. less (or greater) than the iso-level.
  1125.  
  1126.      The display of 3-D isosurfaces is controlled with the first
  1127. column of buttons in the button matrix in the control panel.
  1128. Clicking on one of these buttons with the left mouse button
  1129. causes a small window with a slider widget to appear below.  It
  1130. is used to select iso-level values for contour surfaces.  The
  1131. slider window displays the variable name and the range of values
  1132. for that variable.  The slider value is initially set to the
  1133. minimum of the range.  You can select an iso-level by placing the
  1134. cursor on the slider, holding any mouse button down, and moving
  1135. the cursor right or left.  When you have the iso-level value you
  1136. want, click on the 'NEW SURF' widget button above.  This will
  1137. cause iso-level contour surfaces to be generated for the selected
  1138. physical variable for each time step.
  1139.  
  1140.      Toggling ANIMATE on will let you watch the time dynamics of
  1141. the iso-level contour surfaces.  Note that the surfaces are
  1142. generated asynchronously with the animation, so you may not see
  1143. the surfaces for all the time steps as the clock hand makes it
  1144. revolution.  The new surfaces will appear on successive clock
  1145. revolutions.  If you use a slider and the NEW SURF widget to
  1146. change the value of iso-level contour surfaces, the animation may
  1147. show a combination of new and old valued surfaces while the
  1148. system calculates the new surfaces.
  1149.  
  1150.      Clicking on an isosurface widget button with the middle
  1151. mouse button will summon a variable's iso-level slider without
  1152. turning the surface on or off.
  1153.  
  1154.      To change the color of an isosurface, click on the
  1155. appropriate isosurface widget with the right mouse button.  A
  1156. window will appear with four sliders labeled red, green, blue,
  1157. and transparency.  The color of the isosurface is a mixture of
  1158. red, green and blue components.  By changing the mixture with the
  1159. sliders, any color can be made.  The transparency value slides
  1160. between 0.0 for invisible and 1.0 for opaque.  On SGI and IBM
  1161. systems, "screen-door" transparency is used by default and only
  1162. four levels of transparency are available.  On the Stellar and
  1163. SGI VGX, VGXT, VTX, or RE using the -alpha option, alpha blending
  1164. is used.  Neither method is perfect and may produce unexpected
  1165. artifacts under certain conditions.
  1166.  
  1167.  
  1168.  
  1169. 5.5  CONTOUR, COLOR, AND WIND SLICES
  1170.  
  1171.      Slices allow you to look at planar cross sections of data in
  1172. the 3-D box.  These slices can be oriented either horizontally or
  1173. vertically and may depict either contour lines, colored slices,
  1174. or wind vectors.
  1175.  
  1176.      As described in section 5.1, the last group of buttons on
  1177. the control panel form a matrix of buttons, the four right-most
  1178. columns of which control slices.  There is a column of buttons
  1179. for horizontal contour slices, vertical contour slices,
  1180. horizontal colored slices and vertical colored slices,
  1181. respectively.
  1182.  
  1183.      If your data set contains U, V, and W variables, there will
  1184. also be a row of wind vector slice buttons as described in 5.2.
  1185. There are two buttons for horizontal wind slices and two buttons
  1186. for vertical wind slices.
  1187.  
  1188.      To activate/turn on a slice, click on the appropriate widget
  1189. button with the left mouse button.  The initial position for
  1190. slices is the middle of the box.  The exact slice location in
  1191. terms of latitude, longitude or elevation is given by a small
  1192. numeric labels near the one corner of each slice.  To print the
  1193. numbers as grid coordinates instead of geographic coordinates,
  1194. toggle the "GRID #s" widget button on the control panel.
  1195.  
  1196.      The position of slices can be changed interactively using
  1197. the mouse.  To do so you must first be in SLICE mode by selecting
  1198. the SLICE radio button.  To move any slice, simply point at the
  1199. slice's corner with the mouse, press the right mouse button and
  1200. drag it to a new position.  Vertical slices may also be moved in
  1201. a perpendicular motion by "grabbing" the middle of the top or
  1202. bottom edge and dragging it.  A slice may be moved while in
  1203. animation mode, however, some jumpiness may occur because new
  1204. slices are computed asynchronously.
  1205.  
  1206.      When a slice is turned on, a small control window will
  1207. appear as well.  The function of the control window depends on
  1208. the type of slice:
  1209.  
  1210.      Contour slice:  the control window contains a type-in widget
  1211.           used to specify the interval between contour lines.  To
  1212.           enter a new value, first point at the value with the
  1213.           mouse.  The field will blank to white.  You can now
  1214.           type in a new value and press RETURN.  If you don't
  1215.           press RETURN the old value will be restored when you
  1216.           move the mouse pointer away.  The BACKSPACE key can be
  1217.           used to correct typing mistakes.  Decreasing the
  1218.           interval will cause denser contour lines to be
  1219.           generated, increasing the interval will result in
  1220.           sparser lines.
  1221.      
  1222.           If you enter a negative interval then all contour lines
  1223.           with a negative value will be drawn with dashed lines
  1224.           while positive values will be drawn with solid lines.
  1225.           
  1226.           Optionally, after the interval value you may specify a
  1227.           range of values (a,b) which will cause only contour
  1228.           values between a and b to be drawn.  For example,
  1229.           suppose you enter "-10 (-30,20)" (without quotes).
  1230.           This will result in contour lines for values between
  1231.           -30 and 20 at intervals of 10 with negative lines drawn
  1232.           as dashed lines.
  1233.           
  1234.      Color slice:  the control window contains a 3-function graph
  1235.           which maps data values to colors.  To change the red,
  1236.           green, or blue function press the left, middle, or
  1237.           right mouse button, respectively, and drag the mouse to
  1238.           draw a new function.  By default, low data values are
  1239.           mapped to blue and high data values are mapped to red.
  1240.           If you need to restore the default mapping, press 'r'
  1241.           while the mouse pointer is in the window.
  1242.           
  1243.           Instead of using the mouse to draw a new function you
  1244.           can use the keyboard cursor (arrow) keys to modify the
  1245.           shape and position of the default function curves.
  1246.           
  1247.           Press the left/right keys to move the curves left or
  1248.           right.  Press the up/down keys to change the shape of
  1249.           the curves.
  1250.      
  1251.      Wind vector slice:  the control window contains two type-in
  1252.           widgets to control the scale and density of wind
  1253.           vectors.  The scale parameter is used to multiply the
  1254.           length of vectors drawn.  If you want to double the
  1255.           length of all vectors, enter 2.0.  If you want to halve
  1256.           the lengths, enter 0.5.  The density parameter controls
  1257.           how many wind vectors are displayed.  This value can
  1258.           only be between zero and one.  To make one-half the
  1259.           number of vectors, enter 0.5, for one-fourth enter
  1260.           0.25, etc.  The default values for both parameters is
  1261.           1.0.
  1262.      
  1263.      As with 3-D surfaces, the middle mouse button can be used to
  1264. toggle the control window without changing the slice's on/off
  1265. status.
  1266.  
  1267.      To match a slice to its respective widget button, look at
  1268. the colors:
  1269.  
  1270.      Contour line and wind vector slices:  the color of the
  1271.           widget button is the same as the slice color.  To
  1272.           change the color, select the widget button using the
  1273.           right mouse button.  A window with four sliders:  red,
  1274.           green, blue, and transparency will appear.  By changing
  1275.           the amount of red, green, and blue you can make any
  1276.           color.  The transparency slider has no effect.
  1277.      
  1278.      Colored slices:  the color of the widget button is the same
  1279.           as the slice's position label.  To change the color,
  1280.           click on the appropriate widget button using the right
  1281.           mouse button.  Use the red, green, and blue sliders as
  1282.           previously described.
  1283.      
  1284.  
  1285. 5.6  VOLUME RENDERING
  1286.  
  1287.      If you are running VIS-5D on an SGI workstation with a VGX,
  1288. VGXT, VTX, RE or RE2 graphics system or a Kubota/Denali system
  1289. you can make volumetric renderings of the variables in your
  1290. dataset.  In this case there will be a sixth column of buttons
  1291. will be present in the main button matrix.  To get a volume
  1292. rendering of any variable just click on that variable's button in
  1293. the sixth column using the left mouse button.  Note that only one
  1294. volume rendering can be viewed at a time.
  1295.  
  1296.      You can change the mapping of data values to colors and
  1297. opacity with the color window which appears when the volume is
  1298. first displayed.  As with colored slices (described above), you
  1299. can change the mapping by "drawing" them with the mouse.  Use the
  1300. left mouse button to modify red, middle mouse button to modify
  1301. green and the right button to modify blue.  The fourth curve,
  1302. which is drawn in white, controls opacity.  Hold down any of the
  1303. <shift>, <control> or <alt> keys with any mouse button to change
  1304. the opacity curve.  High values are opaque and low values are
  1305. transparent.  Also, you can use the cursor keys to modify the
  1306. curves.  Holding down any of the <shift>, <control> or <alt> keys
  1307. causes the cursor keys to modify the opacity curve.
  1308.  
  1309. The volume rendering is made as follows:
  1310.      1.Examine the current viewing transformation to determine
  1311.        which axis of the 3-D box is most nearly parallel to the
  1312.        view direction.
  1313.      2.Create a number of colored slices perpindicular to that
  1314.        axis which map data values to colors and opacity.
  1315.      3.Render the colored slices in back to front order.  The
  1316.        alpha values at vertices are interpolated and blended by
  1317.        the graphics hardware to make smooth transitions between
  1318.        and within slices.
  1319.  
  1320.      Note that the volume rendering is completely recomputed
  1321. whenever a different variable is selected, animation is turned
  1322. on, or when the 3-D box is rotated to a new orientation.
  1323.  
  1324.      Despite the simplicity of the algorithm, most fields are
  1325. rendered acceptably.  Those that aren't can be improved by
  1326. adjusting the color and opacity mappings.  While more attractive
  1327. volume rendering techniques are known, none are fast enough to
  1328. support interactive visualization as needed in VIS-5D.
  1329.  
  1330.  
  1331. 5.7  WIND TRAJECTORIES
  1332.  
  1333.      If your data set contains U, V, and W wind component
  1334. variables, you can create wind trajectories.  Wind trajectories
  1335. trace the motion of air through the 3-D volume much line smoke
  1336. trails in a wind tunnel.  To enter trajectory mode select the
  1337. TRAJECTORY radio button on the control panel.  A window titled
  1338. "Interactive Wind Trajectories" will appear near the bottom of
  1339. the screen and a 3-D cursor will appear inside the 3-D view box.
  1340. This 3-D cursor is used to specify where a new wind trajectory
  1341. should be made.  The STEP button on the main control panel is
  1342. also important because it is used to select the time step at
  1343. which to create the trajectory.
  1344.  
  1345.      Wind trajectories are dealt with in sets.  Currently, eight
  1346. sets are available.  Each set is represented in the trajectory
  1347. window with a button labeled Set1, Set2, ..., Set8.  Each set can
  1348. be individually displayed, colored, or deleted.  As you create
  1349. new trajectories you may want to group them in sets corresponding
  1350. to location, time, etc.
  1351.  
  1352.      The first step in creating a trajectory is to select a
  1353. position with the 3-D cursor.  Use the right mouse button to drag
  1354. the 3-D cursor around inside the 3-D box.  The 3-D cursor will
  1355. move in 2-D in a plane parallel to the plane of projection.  That
  1356. is, the cursor will stay at a constant distance of depth.  By
  1357. alternately rotating the view box with the left mouse button and
  1358. placing the cursor with the right mouse button, the 3-D cursor
  1359. can be placed anywhere inside the view box.  The TOP, SOUTH, and
  1360. WEST buttons as explained in section 5.2 can also be useful when
  1361. making trajectories.
  1362.  
  1363.      Second you should select a time step with the STEP button on
  1364. the control panel.  When the trajectory is made, it will be
  1365. traced forward from the current time step to the last time step
  1366. and will be traced backward through time to the first time step.
  1367.  
  1368.      Finally, to make a trajectory at the current cursor location
  1369. and current time step, press the middle mouse button when
  1370. pointing inside the 3-D window.  The trajectory will appear as a
  1371. line segment.  By turning on the ANIMATE button, you can observe
  1372. how the trajectory travels through time and space.  Typically,
  1373. you will repeat the process of positioning the 3-D cursor and
  1374. clicking the middle mouse button to create a set of trajectories.
  1375.  
  1376.      Interesting results can be seen by making a trajectory when
  1377. the ANIMATE button is turned on:  a trajectory will be created
  1378. for every time step instead of just one.  This will show you the
  1379. path of every air parcel which passes through a single point in
  1380. space.
  1381.  
  1382. Here is a summary of the various trajectory functions:
  1383.  
  1384.       1. To position the 3-D cursor, use a combination of
  1385.          rotating the view box with the left mouse button and
  1386.          dragging the 3-D cursor with the right mouse button.
  1387.      
  1388.       2. Use the STEP button or ANIMATE option to select a time
  1389.          step.
  1390.      
  1391.       3. Press the middle mouse button to create a trajectory at
  1392.          the current cursor location and time step.
  1393.      
  1394.       4. To toggle the display of a trajectory set on or off,
  1395.          click on the set button with the left mouse button.
  1396.      
  1397.       5. Select the current trajectory set by clicking on the set
  1398.          button with the middle mouse button.
  1399.      
  1400.       6. Change the color of a trajectory set by clicking on the
  1401.          corresponding trajectory set button with the right mouse
  1402.          button.  A color selection window will appear on the
  1403.          left of your screen.  By adjusting the red, green, and
  1404.          blue sliders, you can change the trajectory set's color.
  1405.      
  1406.       7. A trajectory set may be deleted with the 'Delete Set'
  1407.          button in the trajectories window.  You will asked to
  1408.          verify your decision.
  1409.      
  1410.       8. You can delete the last trajectory made by clicking on
  1411.          the 'Delete Last' button in the trajectories window.
  1412.  
  1413.      The ability to make individual sets of trajectories can used
  1414. to group them according to position or time criteria.
  1415.  
  1416.      Wind trajectories can be depicted in two ways:  as line
  1417. segments or as ribbons.  You can select ribbons by clicking on
  1418. the RIBBON button in the trajectory window.  Toggling the RIBBON
  1419. button will not effect trajectories you have already made but
  1420. rather controls how new trajectories will be displayed.
  1421.  
  1422.      The trajectory window also contains two type-in widgets
  1423. labeled STEP and LENGTH.  The STEP value is used to control the
  1424. step size used in the trajectory tracing algorithm.  100 is the
  1425. default.  The LENGTH value is used to control the length of
  1426. trajectories.  It is simply a scaling value which multiplies the
  1427. length of the trajectory.  For example, to double the length of
  1428. new trajectories enter a value of 2, to triple the length enter
  1429. 3.
  1430.  
  1431.  
  1432. 5.8  TEXT LABELS
  1433.  
  1434.      Text labels are used to annotate the image in the 3-D
  1435. viewing window.  Typically this is used as the final step before
  1436. presenting the output.  You could add a title, your name, the
  1437. date, highlight a particular feature of the data, or document the
  1438. meaning of the data seen in the window.
  1439.  
  1440.      To enter text labeling mode select the LABEL radio button on
  1441. the control panel.
  1442.  
  1443.      To create a text label position the mouse pointer somewhere
  1444. in the 3-D window and press the left mouse button.  A vertical
  1445. bar cursor will appear at that location and you can now type in
  1446. the text.  The <Backspace> key can be used to correct errors.
  1447. When you are finished, press <Return>.
  1448.  
  1449.      To move a text label to a new position, point at it with the
  1450. mouse, hold down the middle mouse button and drag the mouse.  As
  1451. you move the mouse an outline of the text will be dragged with
  1452. the pointer until you release the mouse button.
  1453.  
  1454.      To delete a text label, pointing at it with the mouse and
  1455. pressing the right mouse button.  Be careful, you will not be
  1456. asked for verification before deleting a label.  Once it's
  1457. deleted you can only restore it by retyping it.
  1458.  
  1459.      The SAVE button on the control panel will save any text
  1460. labels you have made.
  1461.  
  1462.      Use the '-font' option to select a different font.
  1463.  
  1464.  
  1465. 5.9  DATA PROBE
  1466.  
  1467.      Sometimes it's useful to be able to inspect individual data
  1468. values at various locations in the 3-D volume.  You can do this
  1469. with the data probe.  Click on the PROBE mode button on the
  1470. control panel.  A 3-D cursor appears in the 3-D box which you can
  1471. move around using the right mouse button.  For each physical
  1472. variable the value for the current time step is printed along the
  1473. left edge of the 3-D window.
  1474.  
  1475.  
  1476. 5.10  MAKING NEW VARIABLES
  1477.  
  1478.      The NEW VAR button on the control panel is used to add new
  1479. physical variables in vis5d.  There are two kinds of new
  1480. variables you can add:
  1481.  
  1482.      1. Cloned variables:  these are copies of existing
  1483. variables.  You can use a cloned variable to make two different
  1484. isosurfaces of the same variable simultaneously, for example.
  1485.  
  1486.      2. External function variables:  you can invoke an external
  1487. function (which you write) to compute a new variable as a
  1488. function of the existing ones.
  1489.  
  1490.      When you click on the NEW VAR button a window appears which
  1491. lists the variables which you can clone and external functions
  1492. which you can invoke.  After you select one, a new row of buttons
  1493. will be added to the control panel for the new variable.  You can
  1494. use then make isosurfaces, contour slices, etc. of the that
  1495. variable.
  1496.  
  1497.  
  1498. 5.10.1  CLONED VARIABLES
  1499.  
  1500.      Suppose you want to clone the U wind component variable so
  1501. that you can make both +20 and -20 isosurfaces of it.  First,
  1502. click on NEW VAR and then select U from the pop-up window.  The
  1503. cloned variable will be named U'.  You can then treat U' as any
  1504. other variable and make an isosurface of it.
  1505.  
  1506.  
  1507. 5.10.2  EXTERNAL ANALYSIS FUNCTIONS
  1508.  
  1509.      An external analysis function is a function written by you
  1510. in FORTRAN which is called by VIS-5D to produce a new variable as
  1511. a function of the existing variables.  As an example, there is
  1512. included a function SPD3D which computes wind velocity as:  SPD3D
  1513. = SQRT( U*U + V*V + W*W ).  Be aware that the external function
  1514. feature is intended for experienced VIS-5D users who are also
  1515. proficient FORTRAN programmers.
  1516.  
  1517.      All external functions must be placed in a directory named
  1518. "userfuncs".  This is relative to the current directory when you
  1519. run vis5d.  For example, suppose you always run vis5d while in
  1520. "/usr/jones/data", then your analysis functions must be in
  1521. "/usr/jones/data/userfuncs".  Also, this directory contains a
  1522. script "externf" which is used to compile your function.
  1523.  
  1524.      To write an external function it's best to copy one of the
  1525. supplied examples and then modify it.  The included
  1526. "userfuncs/example.f" is fully commented for this purpose.
  1527. Later, when you call your function from within vis5d, the
  1528. function will be invoked once for each time step.  The arguments
  1529. passed to the function include:
  1530.  
  1531.      1. the number of physical variables in the data set
  1532.      2. the name of each variable
  1533.      3. the size of the 3-D grid
  1534.      4. the 3-D grids of data for each variable
  1535.      5. the date and time of the time step
  1536.  
  1537.      Your function will have to scan the list of variables to
  1538. find the ones it needs for the computation.  Then it must do the
  1539. actual computation, generating a new grid of data.  The examples
  1540. we've included demonstrate how to do this.
  1541.  
  1542.      Suppose you want your function to be named "delta".  Then
  1543. the name of the FORTRAN program must be "delta.f".  You would
  1544. compile the function by typing "externf delta".  If there are no
  1545. errors, an executable file "delta" will be written.  Then in
  1546. vis5d when you select NEW VAR, "delta" should appear in the list
  1547. of functions in the pop-up window.
  1548.  
  1549.      There are two places for vis5d to get the grid data which it
  1550. passes to your external function:  from the original,
  1551. uncompressed McIDAS file or the compressed VIS-5D file.  The
  1552. uncompressed McIDAS data is better because it has more precision.
  1553. In order for vis5d to find the McIDAS file, the compressed file
  1554. must have been made with the version 3.1 comp5d and the McIDAS
  1555. file must be in the current directory.  If the McIDAS file can't
  1556. be found, then the compressed data which vis5d has in memory will
  1557. be passed to your external function.  Note that this has no
  1558. bearing whatsoever on the construction of your external function.
  1559.  
  1560.  
  1561. 5.11  KEYBOARD FUNCTIONS
  1562.  
  1563.      The following keyboard functions can be invoked while the
  1564. mouse pointer is inside the 3-D viewing window:
  1565.  
  1566.      Key  Function
  1567.      F1   Raise or lower the control panel widget window.  This
  1568.           is useful with the -full option.
  1569.      F2   Toggle display of system information including memory
  1570.           used and number of graphics to be computed.
  1571.      P    Print the current window image.  A PostScript printer
  1572.           must be available.  Set the PRINTER environment
  1573.           variable from your shell to specify which printer to
  1574.           use.
  1575.      
  1576.      If you want to program your own keyboard functions look the
  1577. in the file src/gui.c for the
  1578. func1(), func2(), func3(), etc functions.  They are called when
  1579. the corresponding function key is pressed.
  1580.  
  1581.  
  1582. 5.12  SPACEBALL SUPPORT
  1583.  
  1584.      Version 2.1 and later of VIS-5D for the Stardent also
  1585. supports the SpaceBall made by Spatial Systems, Inc.  If you have
  1586. a SpaceBall make sure the environment variable 'SPACEBALL' is
  1587. defined.  This can be done by adding a line similar to 'setenv
  1588. SPACEBALL /dev/tty04' (make sure you use the correct tty number)
  1589. to your .cshrc file.  If vis5d recognizes the SpaceBall it will
  1590. emit two short beeps upon startup.  See your SpaceBall
  1591. documentation for more information about setup.
  1592.  
  1593.      Twisting the SpaceBall causes an appropriate rotation of the
  1594. 3-D box.  Pressing the SpaceBall up, down, left, or right is
  1595. analogous to translation with the mouse.  Pressing the SpaceBall
  1596. toward or away you causes the box to zoom in or out,
  1597. respectively.  The SpaceBall function keys are defined as
  1598. follows:
  1599.  
  1600. (1) Top view        (2) South View (3) West View       (4) Unused
  1601. (5) Bottom View     (6) North View (7) East View       (8) Rezero
  1602. Ball
  1603.  
  1604. These assignments can be changed in the src/sb.c source file.
  1605.  
  1606.  
  1607. 5.13  COMMON QUESTIONS (AND ANSWERS)
  1608.  
  1609. Q: Why doesn't the map and/or topography work for me?
  1610.  
  1611. A: If the "MAP" and "TOPO" buttons don't appear on the control
  1612. panel, the default files were not found.  By default, vis5d looks
  1613. in the current directory for the OUTLSUPW and EARTH.TOPO iles.
  1614. Change the src/vis5d.h file to specify absolute path names or
  1615. copy the map and topography files to your current directory.
  1616.  
  1617. Q: How can I print the image in the window?
  1618.  
  1619. A: Just press P as mentioned in section 5.11.  Also, if
  1620. available, you should first turn on the "PRETTY" button to get a
  1621. good quality image and select the "REVERSE" button.  If you do
  1622. not have a color printer you should make all your VIS-5D colors
  1623. shades of gray to get a good idea of what results you can expect.
  1624. Alternatively, you can save the window image to a file and then
  1625. manipulate it with other programs before printing.
  1626.  
  1627. Q: How do I make photographic slides?
  1628.  
  1629. A: A 35mm camera on a tripod works good.  First turn off all
  1630. lights in the room and close all window shades to prevent glare.
  1631. Setup your image and turn on "PRETTY" if available.  Take several
  1632. pictures at various exposures to find the best setting for your
  1633. camera.
  1634.  
  1635. Q: How do I make videos?
  1636.  
  1637. A: First you'll need a scan converter to convert the RGB video
  1638. signal sent to your monitor into an NTSC (or PAL) signal which
  1639. can be recorded by any standard VCR.  There is no scripting
  1640. language in VIS-5D so you must compose your video "on the fly"
  1641. and edit it later if you have two VCRs.  You can even make video
  1642. titles with vis5d!  Start vis5d with '-full' and a large font
  1643. with '-font', go into 'Label' mode, hide the control panel
  1644. window, and then make your titles.
  1645.  
  1646. Q: Does VIS-5D support non-uniform grid height spacing and/or
  1647. other map projections?
  1648.  
  1649. A. Wait for the next version of VIS-5D...
  1650.  
  1651.  
  1652. 5.14  FINAL NOTES
  1653.  
  1654.      The SGI and Stardent versions of VIS-5D are parallel
  1655. programs; after you select a new isosurface, move a slice, etc.
  1656. you are free to do other things such as rotate the box.  The
  1657. other versions does not allow this; user input is blocked while
  1658. graphics are being computed.  [A way to set up multiple threads
  1659. of execution within a process is required to solve this problem.]
  1660. For a large data set, generating isosurfaces or slices for all
  1661. the time steps may take a while.
  1662.  
  1663.      VIS-5D uses a bounded memory management system to avoid
  1664. using more memory than what is available, thereby preventing
  1665. virtual memory thrashing which leads to poor performance.  When
  1666. the memory limit is reached, the least recently displayed
  1667. graphics are deallocated.  You can monitor the amount of memory
  1668. used by pressing the F2 key.  If you try to read in a grid file
  1669. which will not fit into memory, or not leave enough working
  1670. memory free, you will get an error message saying so.  A system
  1671. with 32MB of RAM can read with files of up to approximately 12.5
  1672. million data points, with a 128MB system you can visualize 50
  1673. million data points, etc.
  1674.  
  1675.      When you save the current graphics and/or colors with the
  1676. SAVE button, the information is written to a file with the
  1677. extension ".SAVE".  For example, if you do a SAVE while
  1678. visualizing the "COMPLAMP" data set, the save file will be named
  1679. "COMPLAMP.SAVE".  This file can be rather large.  When it's no
  1680. longer needed you can delete it.
  1681.  
  1682.      The vis5d user interface may be complex to describe in
  1683. words, but we have tried hard to make it simple in reality.
  1684. After a little practice using the sample data sets we hope it
  1685. feels natural.
  1686.  
  1687.      Since version 3.2 of VIS-5D there is a user-contributed
  1688. software directory:  contrib/.  See the README file in that
  1689. directory for a description of current contributions.
  1690.  
  1691.  
  1692.  
  1693. 6. VISUALIZING AND ANALYZING THE SAMPLE DATA SETS
  1694.  
  1695.      We have included two sample data sets.  To visualize one of
  1696. Bob Schlesinger's thunderstorm simulations, enter the command:
  1697.  
  1698.      vis5d COMPSCHL
  1699.  
  1700. Then to view an isosurface of QL (moisture content):
  1701.  
  1702.      1. Click on the QL button in the left column of the button
  1703.         matrix.
  1704.      2. On the slider, select a value near 1.0, then click on the
  1705.         NEWSURF button.
  1706.      3. Turn on animation with the ANIMATE button.
  1707.  
  1708. To view a vertical contour line slice of QL:
  1709.  
  1710.      1. Turn off animation by clicking on ANIMATE again.
  1711.      2. Click on the QL button in the third column.
  1712.      3. Move the slice by first selecting the SLICE radio button.
  1713.         Then use the right mouse button to drag any corner of the
  1714.         slice along the edges of the 3-D box.
  1715.  
  1716.  
  1717. To visualize a LAMPS (Limited Area Meso-Scale Prediction System)
  1718. model simulation of an extratropical cyclone, enter the command:
  1719.  
  1720.      vis5d COMPLAMP
  1721.  
  1722. To view an isosurface of wind speed over a topography with map
  1723. lines:
  1724.  
  1725.      1. Click on the TOPO and MAP buttons.
  1726.      2. Click on the SPD button in the first column.  Then select
  1727.         a value near 45.0 on the slider and click on NEWSURF.
  1728.      3. Turn on ANIMATE and you will see an animation of the 45
  1729.         m/s wind isosurface.
  1730.  
  1731. To make some interactive wind trajectories:
  1732.  
  1733.      1. Turn off the wind speed isosurface by clicking on the SPD
  1734.         button again
  1735.      2. Select the TRAJECTORY button.
  1736.      3. Move the mouse pointer into the 3-D window and press the
  1737.         middle mouse button.  You will get a series of white wind
  1738.         trajectory lines passing through the 3-D cursor location.
  1739.      4. Move the 3-D cursor by dragging it with the right mouse
  1740.         button then click the middle button to make more
  1741.         trajectories.
  1742.      5. Select RIBBON and then the SET 2 button and try making
  1743.         some yellow ribbon trajectories.
  1744.  
  1745.  
  1746.      These data sets are also available in the form of 3D McIDAS
  1747. grid files name GR3D0001 and GR3D0002.  See section 2 if you
  1748. don't have these files.  To list the thunderstorm grids and to
  1749. see statistics about them, enter the commands:
  1750.  
  1751.      igg3d list 1 190 -gr3df 1
  1752.      igg3d info 1 190 -gr3df 1
  1753.  
  1754. The COMPSCHL compress file was made from the GR3D0001 file with
  1755. the command:
  1756.  
  1757.      comp5d 1 1 COMPSCHL -wind spd u v w
  1758.  
  1759. To try out the compinfo program, type:
  1760.  
  1761.      compinfo COMPSCHL
  1762.  
  1763. Then, as before, the data can be visualized with:
  1764.  
  1765.      vis5d COMPSCHL
  1766.  
  1767.  
  1768. To list the LAMPS grids and to see statistics about them, enter
  1769. the commands:
  1770.  
  1771.      igg3d list 1 189 -gr3df 2
  1772.      igg3d info 1 189 -gr3df 2
  1773.  
  1774. The COMPLAMP compressed grid file was produced with the command:
  1775.  
  1776.      comp5d 2 1 COMPLAMP -wind spd u v w
  1777.  
  1778.  
  1779.  
  1780. 7. WRITING YOUR OWN DATA ANALYSIS PROGRAM
  1781.  
  1782.      The source files igg3d.F and gg3d.F, in the src
  1783. subdirectory, are both good models for analysis programs.  They
  1784. use the IGGT3D routine to read arrays from 3D grids, and the
  1785. IGPT3D routine to write arrays to 3D grids.  Section 3 of this
  1786. document describes many of the routines in libmain.a which may be
  1787. useful for writing analysis programs.
  1788.  
  1789.  
  1790.  
  1791. 8. VERSION HISTORY
  1792.  
  1793.      This is a version history of VIS-5D.
  1794.  
  1795. 1.0  (December 1988)
  1796.      This was the original version of VIS-5D for the Stellar GS-
  1797.      1000.  It was used to give demonstrations at the ECMWF in
  1798.      December 1988 and at the AMS conference in Anahiem in
  1799.      January 1989.  It had the following features:
  1800.           Depict time series of multivariate 3-D grids by
  1801.                animated isosurfaces and horizontal contour line
  1802.                slices.
  1803.           World topography map with map boundaries.
  1804.           Wind trajectory tracing with the traj5d program.
  1805.      
  1806. 2.0  (Fall 1991)
  1807.      This version was only available for the Stellar GS-1000/2000
  1808.      and introduced the following features:
  1809.      
  1810.           Faster isosurface generation.
  1811.           Horizontal and vertical slices moved interactively with
  1812.                the mouse.
  1813.           Colored slices.
  1814.           Interactive wind trajectory creation.
  1815.           Ribbon trajectories.
  1816.           Label / text annotations.
  1817.           "Pretty" rendering option.
  1818.                
  1819.      The format of the compressed grid file was changed slightly
  1820.      with version 2.0.  Specifically, the trajectory files of
  1821.      version 1.0 were eliminated, trajectories are now stored in
  1822.      the compressed grid file itself.  Also, the internal storage
  1823.      representation for surfaces and slices has been changed.
  1824.                
  1825. 2.1  (February 1992)
  1826.      This is the first version of VIS-5D available for the SGI
  1827.      and IBM workstations.  It was also modified to use less
  1828.      memory during isosurface generation.
  1829.      
  1830. 2.2  (April 1992)
  1831.      This version of VIS-5D runs on the base SGI Indigo with
  1832.      8-bit color though some features not available.  It also has
  1833.      the following improvements:
  1834.      
  1835.           The -box option for changing the proportions of the 3-D
  1836.                box (SGI and Stardent only).
  1837.           User topography files.  VIS-5D now uses the EARTH.TOPO
  1838.                file instead of TOPOHRES to make the map.  The
  1839.                maketopo.c program shows how to make new .TOPO
  1840.                files.  (SGI and Stardent only)
  1841.  
  1842. 3.0  (August 1992)
  1843.      This version features the following improvements:
  1844.           
  1845.           Horizontal and vertical wind vector slices.
  1846.           Improved SAVE and RESTORE functionality.
  1847.           New trajectory widget options.
  1848.           Separate map and topography controls.
  1849.           CLONE option added.
  1850.           Simultaneous colored and contour line slices.
  1851.           Improved transparency, PRETTY option on SGI.
  1852.           Same source code for SGI, Stardent, and IBM.
  1853.           Improved portability and porting guide added.
  1854.           New video and hardcopy convenience features.
  1855.  
  1856. 3.1  (July 1993)
  1857.      New features:
  1858.  
  1859.           User-written analysis functions.
  1860.           SAVE PIC button to save window image to a file.
  1861.           Perspective viewing mode.
  1862.           New contour line options to draw dashed negative lines
  1863.                and restrict contouring to a specific range of
  1864.                values.
  1865.           Data Probe mode.
  1866.           Topography color editing.
  1867.           Grid compression done layer-by-layer.
  1868.  
  1869. 3.2  (August 1993)
  1870.      New features and changes:
  1871.  
  1872.           Volumetric rendering on SGI systems with VGX, VGXT,
  1873.                VTX, RE, or RE2 graphics hardware.
  1874.           User-contributed software directory.
  1875.           2-D contour function rewritten in C.
  1876.  
  1877. 3.3  (January 1994)
  1878.      New features:
  1879.  
  1880.           VIS-5D ported to HP, DEC, Sun, and Kubota (DEC Alpha)
  1881.                workstations.  The most important part of this
  1882.                work was the enhancement and integration of the
  1883.                VOGL library.  This work was done by Simon Baas
  1884.                and Hans de Jong for the Dutch Meteorological
  1885.                Institute, KNMI.  Porting to the Kubota Denali
  1886.                graphics system was done by Pratish Shah of Kubota
  1887.                Inc.  Thanks guys!
  1888.           -wdpy option now creates a window on the widget display
  1889.                which can be used to move and interact with the
  1890.                3-D view using the widget display's mouse.
  1891.           SAVEPIC button let's you save the window image in
  1892.                PostScript or color PostScript formats (SGI only).
  1893.           -wind2 option added to specify a second set of U,V,W
  1894.                variables for the second set of wind vector
  1895.                slices.
  1896.           -texture option added for a texture mapping an image
  1897.                onto the topography (SGI only).
  1898.           user functions are computed faster on SGI multi-
  1899.                processor systems by computing time steps in
  1900.                parallel.
  1901.           
  1902.           
  1903.  
  1904. 9. VIS-5D AS A SUBSYSTEM OF McIDAS
  1905.  
  1906.      VIS-5D is being distributed as a stand alone system free of
  1907. charge.  However, it is also a subsystem of a much larger system
  1908. named McIDAS (Man-computer Interactive Data Access System).
  1909. McIDAS is a proprietary system of the Space Science and
  1910. Engineering Center which we have been developing for over twenty
  1911. years and which now includes about two million lines of FORTRAN.
  1912. McIDAS also includes lots of SSEC designed hardware for satellite
  1913. data acquisition, communications, and workstations.  McIDAS can
  1914. ingest data from almost all weather satellites and many other
  1915. sources in real time, manage enormous data bases (our GOES
  1916. archive contains 100 trillion bytes), display that data, and
  1917. apply lots of source specific analyses to the data.  As a
  1918. subsystem of McIDAS, VIS-5D needs to be consistent with its
  1919. structures.  This may make VIS-5D seem a little odd as a stand
  1920. alone system.  McIDAS is evolving to be sure, but a system so
  1921. large changes slowly.  As recently as 1980 the source code for
  1922. McIDAS resided on several tons of punch cards, and it has come a
  1923. long way since then.
  1924.  
  1925.